﻿using System;
using System.Data;
using System.Data.SqlClient;
using consultasSql.consultasVarias;
using ot;

/// <summary>
/// Descripción breve de CConsultaOrdenTrabajo
/// </summary>

namespace consultasSql
{
    public class CConsultaOrdenTrabajo
    {
        
        /*UPDATE*/
        public bool update(COrdenTrabajo objeto)
        {
            bool bandera = false;

            string consulta = "UPDATE OTCab SET IdMov = @IdMov, ImputaEnarsa = @ImputaEnarsa, IdProy = @IdProy, Distribuidora = @Distribuidora, IdGenerador = @IdGenerador, IdCisterna = @IdCisterna, IdSemi = @IdSemi, IdTanque = @IdTanque, IdRingMaster = @IdRingMaster, IdTransfKVA = @IdTransfKVA, IdTransfMVA = @IdTransfMVA, IdTablero = @IdTablero, llevaCable = @llevaCable, IdProvincia = @IdProvincia, IdLocalidad = @IdLocalidad, Calle = @Calle, Altura = @Altura, CoordLong = @CoordLong, CoordLat = @CoordLat, ObsOT = @ObsOT WHERE Id = @IdOtCab                   UPDATE Cisterna SET IdOtCab = @IdOtCab WHERE Id = @IdCisterna UPDATE Generador SET IdOtCab = @IdOtCab WHERE Id = @IdGenerador UPDATE RingMaster SET IdOtCab = @IdOtCab WHERE Id = @IdRingMaster UPDATE Semis SET IdOtCab = @IdOtCab WHERE Id = @IdSemi UPDATE Tablero SET IdOtCab = @IdOtCab WHERE Id = @IdTablero UPDATE Tanque SET IdOtCab = @IdOtCab WHERE Id = @IdTanque UPDATE TransfKVA SET IdOtCab = @IdOtCab WHERE Id = @IdTransfKVA UPDATE TransfMVA SET IdOtCab = @IdOtCab WHERE Id = @IdTransfMVA";


            using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    if (objConexion.State == ConnectionState.Closed)
                    { objConexion.Open(); }

                    command.CommandType = CommandType.Text;
                    command.CommandText = consulta;

                    command.Parameters.Clear();



                    command.Parameters.AddWithValue("@IdOtCab", objeto.Id);


                    if (!String.IsNullOrEmpty(objeto.idMov))
                    {
                        command.Parameters.Add(new SqlParameter("@IdMov", SqlDbType.Int));
                        command.Parameters["@IdMov"].Value = Convert.ToInt32(objeto.idMov);
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdProy", DBNull.Value);
                    }

                    command.Parameters.AddWithValue("@ImputaEnarsa", objeto.ImputaEnarsa);


                    if (!String.IsNullOrEmpty(objeto.nombreProy))
                    {
                        command.Parameters.Add(new SqlParameter("@IdProy", SqlDbType.Int));
                        command.Parameters["@IdProy"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Proyecto", "NombProy", objeto.nombreProy));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdProy", DBNull.Value);
                    }


                    command.Parameters.AddWithValue("@Distribuidora", objeto.Distribuidora);


                    if (!String.IsNullOrEmpty(objeto.movexGenerador))
                    {
                        command.Parameters.Add(new SqlParameter("@IdGenerador", SqlDbType.Int));
                        command.Parameters["@IdGenerador"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Generador", "Movex", objeto.movexGenerador));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdGenerador", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexCisterna))
                    {
                        command.Parameters.Add(new SqlParameter("@IdCisterna", SqlDbType.Int));
                        command.Parameters["@IdCisterna"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Cisterna", "Movex", objeto.movexCisterna));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdCisterna", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexSemi))
                    {
                        command.Parameters.Add(new SqlParameter("@IdSemi", SqlDbType.Int));
                        command.Parameters["@IdSemi"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Semis", "Movex", objeto.movexSemi));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdSemi", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexTanque))
                    {
                        command.Parameters.Add(new SqlParameter("@IdTanque", SqlDbType.Int));
                        command.Parameters["@IdTanque"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Tanque", "Movex", objeto.movexTanque));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdTanque", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexRingMaster))
                    {
                        command.Parameters.Add(new SqlParameter("@IdRingMaster", SqlDbType.Int));
                        command.Parameters["@IdRingMaster"].Value = Convert.ToInt32(new CObtenerId().obtenerId("RingMaster", "Movex", objeto.movexRingMaster));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdRingMaster", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexTransfKVA))
                    {
                        command.Parameters.Add(new SqlParameter("@IdTransfKVA", SqlDbType.Int));
                        command.Parameters["@IdTransfKVA"].Value = Convert.ToInt32(new CObtenerId().obtenerId("TransfKVA", "Movex", objeto.movexTransfKVA));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdTransfKVA", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexTransfMVA))
                    {
                        command.Parameters.Add(new SqlParameter("@IdTransfMVA", SqlDbType.Int));
                        command.Parameters["@IdTransfMVA"].Value = Convert.ToInt32(new CObtenerId().obtenerId("TransfMVA", "Movex", objeto.movexTransfMVA));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdTransfMVA", DBNull.Value);
                    }

                    if (!String.IsNullOrEmpty(objeto.movexTablero))
                    {
                        command.Parameters.Add(new SqlParameter("@IdTablero", SqlDbType.Int));
                        command.Parameters["@IdTablero"].Value = Convert.ToInt32(new CObtenerId().obtenerId("Tablero", "Movex", objeto.movexTablero));
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdTablero", DBNull.Value);
                    }


                    command.Parameters.AddWithValue("@llevaCable", objeto.llevaCable);

                    command.Parameters.AddWithValue("@IdProvincia", objeto.IdProvincia);
                    command.Parameters.AddWithValue("@IdLocalidad", objeto.IdLocalidad);

                    command.Parameters.AddWithValue("@Calle", objeto.Calle);
                    command.Parameters.AddWithValue("@Altura", objeto.Altura);
                    command.Parameters.AddWithValue("@CoordLong", objeto.CoordLong);
                    command.Parameters.AddWithValue("@CoordLat", objeto.CoordLat);
                    command.Parameters.AddWithValue("@ObsOT", objeto.ObsOT);

                    command.Connection = objConexion;

                    try
                    {
                        command.ExecuteNonQuery();
                        bandera = true;
                    }
                    catch
                    {
                        bandera = false;
                    }

                    if (objConexion.State == ConnectionState.Open)
                    { objConexion.Close(); }
                }
            }

            updateEstado(objeto.Id);

            return bandera;
        }

        //guardo el estado en que se encuentra la orden
        private bool updateEstado(int IdOtCab)
        {
            CEstadoOt estado = new CEstadoOt();

            estado.IdOtCab = IdOtCab;
            estado.OrdenTrabajo = true;

            return new CConsultaEstadoOt().update(estado);
        }


        

    
    }
}